﻿/* PN264 - A Parallel H.264 Encoding Utility
 * Copyright © 2009 PN264 Development Team
 *
 * This software is released the terms and conditions of the MIT License,
 * a copy of which can be found in the License.txt file.
 *
 * Contributors:
 * Will 'AnarkiNet' Shelley (AnarkiNet@gmail.com)
 */
using System;

namespace PN264
{
    /// <summary>
    /// Represents various stages that a <see cref="Job"/> can be in.
    /// </summary>
    [Flags]
    public enum JobStatus
    {
        /// <summary>
        /// Indicates no job status. This should only be used when
        /// <see cref="JobStatus"/> is used as a filter.
        /// </summary>
        None = 0x0,
        /// <summary>
        /// The job is disabled/postponed and will not be automatically
        /// processed.
        /// </summary>
        Disabled = 0x1,
        /// <summary>
        /// The job is waiting to start.
        /// </summary>
        Waiting = 0x2,
        /// <summary>
        /// One or more tasks in the job have been started but further
        /// processing has been halted.
        /// </summary>
        Paused = 0x4,
        /// <summary>
        /// One or more tasks in the job are being worked on.
        /// </summary>
        Processing = 0x8,
        /// <summary>
        /// The job is done and processing was successful.
        /// </summary>
        Completed = 0x10,
        /// <summary>
        /// An error occurred while processing the job resulting in failure.
        /// </summary>
        Failed = 0x20,
        /// <summary>
        /// The job was canceled by the user.
        /// </summary>
        Canceled = 0x40,
        /// <summary>
        /// Used only when <see cref="JobStatus"/> is being used as a filter,
        /// and indicates all job statuses.
        /// </summary>
        All = 0x7F,
    }
}
